﻿ // 飞机大战.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include "pch.h"
#include <graphics.h>
#include <conio.h>
#include <stdlib.h>

#pragma comment(lib,"Winmm.lib")

#define High 700 
#define Width 500
int position_x, position_y;
int bullet_x, bullet_y;
int enemy_x, enemy_y;

IMAGE img_bk;
IMAGE img_planeNormal1, img_planeNormal2;
IMAGE img_bullet1, img_bullet2;
IMAGE img_enemyPlane1, img_enemyPlane2;
IMAGE img_planeExplode_1,img_planeExplode_2;

void startup()
{
	initgraph(Width, High);
	loadimage(&img_bk, _T("C:\\Users\\洪\\Desktop\\c\\飞机大战图片音乐素材\\background.jpg"));
	loadimage(&img_planeNormal1,_T("C:\\Users\\洪\\Desktop\\c\\飞机大战图片音乐素材\\planeNormal_1.jpg"));
	loadimage(&img_planeNormal2, _T("C:\\Users\\洪\\Desktop\\c\\飞机大战图片音乐素材\\planeNormal_2.jpg"));
	position_x = Width / 2;
	position_y = High * 0.7;
	enemy_x = Width / 2;
	enemy_y = 0;
	loadimage(&img_bullet1, _T("C:\\Users\\洪\\Desktop\\c\\飞机大战图片音乐素材\\bullet1.jpg"));
	loadimage(&img_bullet2, _T("C:\\Users\\洪\\Desktop\\c\\飞机大战图片音乐素材\\bullet2.jpg"));
	loadimage(&img_enemyPlane1, _T("C:\\Users\\洪\\Desktop\\c\\飞机大战图片音乐素材\\enemyPlane1.jpg"));
	loadimage(&img_enemyPlane2, _T("C:\\Users\\洪\\Desktop\\c\\飞机大战图片音乐素材\\enemyPlane2.jpg"));
	loadimage(&img_planeExplode_1, _T("C:\\Users\\洪\\Desktop\\c\\飞机大战图片音乐素材\\planeExplode_1.jpg"));
	loadimage(&img_planeExplode_2, _T("C:\\Users\\洪\\Desktop\\c\\飞机大战图片音乐素材\\planeExplode_2.jpg"));

	BeginBatchDraw();

}

void gameover()
{
	EndBatchDraw();
	_getch();
	closegraph();
}

void show()
{
	putimage(0, 0, &img_bk);
	putimage(position_x-50, position_y-60, &img_planeNormal1,NOTSRCERASE);
	putimage(position_x-50, position_y-60, &img_planeNormal2,SRCINVERT);
	putimage(bullet_x, bullet_y, &img_bullet1, NOTSRCERASE);
	putimage(bullet_x, bullet_y, &img_bullet2, SRCINVERT);
	putimage(enemy_x, enemy_y, &img_enemyPlane1, NOTSRCERASE);
	putimage(enemy_x, enemy_y, &img_enemyPlane2, SRCINVERT);
	if (abs(enemy_x - position_x) + abs(enemy_y - position_y) < 150)
	{
		putimage(position_x - 50, position_y - 60, &img_planeExplode_1, NOTSRCERASE);
		putimage(position_x - 50, position_y - 60, &img_planeExplode_2, SRCINVERT);
		gameover();
	}
	outtextxy(Width/2, High-20, "得分：");


	FlushBatchDraw();
	Sleep(5);
}

void updatewithoutinput()
{
	if (bullet_y > -50)
	{
		bullet_y = bullet_y - 2;
	}
	if (enemy_y < High)
	{
		enemy_y++;
	}
	else
	{
		enemy_x = rand() % Width;
			enemy_y = 0;
	}
	if (abs(enemy_x - (bullet_x-50)) + abs(enemy_y - (bullet_y-60)) < 50)
	{
		enemy_x = rand() % 400;
		enemy_y = 0;
		bullet_x = position_x;
		bullet_y = -100;
	}
	
}

void updatewithinput()
{
	MOUSEMSG m;
	while (MouseHit())
	{
		m = GetMouseMsg();
		if (m.uMsg == WM_MOUSEMOVE)
		{
			position_x = m.x;
			position_y = m.y;
		}
		else if (m.uMsg == WM_LBUTTONDOWN)
		{
			bullet_x = position_x;
			bullet_y = position_y - 100;
		}
	}
}




int main()
{
	startup();
	while (1)
	{
		updatewithinput();
		updatewithoutinput(); 
		show();
	}
	gameover();
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门提示: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件
